package com.zhangye.test.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zhangye.test.mapper.AdminMapper;
import com.zhangye.test.mapper.ProxyMapper;
import com.zhangye.test.model.Admin;
import com.zhangye.test.model.Proxy;
import com.zhangye.test.util.PageInfo;
import com.zhangye.test.util.Result;

@Service
public class ProxyService {

	@Autowired
	private ProxyMapper proxyMapper;
	@Autowired
	private AdminMapper adminMapper;
	@Autowired
	private AdminService adminService;
	
	/**
	 * 删除，并删除admin
	 * 作者： 张叶
	 * 创建时间：2018年10月10日  下午5:54:48
	 */
	@Transactional
	public int deleted(Long id){
		int i = proxyMapper.deleteByPrimaryKey(id);
		List<Admin> list = adminService.selectWhere(" and proxy_id = " + id);
		if(list.size() > 0){
			i += adminService.delAdminAndAur(list.get(0).getId());	
		}
		return i;
	}
	
	
	/**
	 * 添加，
	 * 1，判断登录名是否存在，
	 * 2，事务添加admin表（添加对应字段），以及proxy表
	 * 作者： 张叶
	 * 创建时间：2018年9月19日  下午3:09:23
	 */
	@Transactional
	public Result insert(Proxy p){
		Result result = new Result();
		List<Admin> list = adminMapper.loginAdmin(p.getUserName());
		if(list.size() == 0){//添加admin,proxy
			try{
				p.setCreatedAt(new Date());
				int i = proxyMapper.insert(p);
				Admin admin = new Admin();
				admin.setTelphone(p.getUserName());
				admin.setUsername(p.getUserName());
				admin.setPassword(DigestUtils.md5Hex(p.getPassword()));
				admin.setCreatedate(new Date());
				admin.setCounts(0);
				admin.setRoleid(5);
				admin.setIsabled(0);
				admin.setRealname(p.getName());
				admin.setProxyId(p.getId());
				i += adminService.insertAdminAndAur(admin);// 保存会员信息
				if(i > 0){
					result.code = 0;
					result.message = "添加成功";
				}else{
					result.code = 1;
					result.message = "系统错误，添加失败";
				}
			}catch(Exception e){
				result.code = 1;
				result.message = "系统错误，添加失败";
			}
		}else{
			result.code = 2;
			result.message = "登录名已存在，请重新输入";
		}
		return result;
	}
	
	
	/**
	 * 条件
	 * 作者： 张叶
	 * 创建时间：2018年9月19日  上午11:54:33
	 */
	public List<Proxy> selectWhere(String where){
		List<Proxy> list = proxyMapper.selectWhere(where);
		return list;
	}

	
	/**
	 * 代理代表
	 * 作者： 张叶
	 * 创建时间：2018年9月19日  上午11:49:30
	 */
	public List<Map<String,Object>> selectByPage(PageInfo pageInfo, String where, String order) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("myCount", pageInfo.getCount());
		param.put("pageSize", pageInfo.getPageSize());
		param.put("page", pageInfo.getPage());
		param.put("where", where);
		param.put("order", order);
		List<Map<String, Object>> m = proxyMapper.selectByPage(param);
		pageInfo.setCount(Integer.parseInt(param.get("myCount").toString()));
		return m;
	}
}
